#include <limits.h>  // INT_MIN,INT_MAX
#include <math.h>    // abs,pow

#include <algorithm>      // sort
#include <iostream>       // cout,cin
#include <numeric>        // accumulate
#include <string>         // string
#include <unordered_map>  // unordered_map
#include <unordered_set>  // unordered_set
#include <vector>         // vector

using namespace std;

// 如果x是2的幂则返回True，否则返回False
bool IsPowerOf2(int x) { return (x & (x - 1)) == 0; }

class Solution {
   public:
    bool validPalindrome(string s) {
        int size = s.size();

        // 寻找不匹配的字符位置
        int l0 = 0, r0 = size - 1;
        while (l0 < r0) {
            if (s[l0] != s[r0]) {
                break;
            }
            l0++;
            r0--;
        }

        // 尝试移除左侧匹配
        int l1 = l0 + 1, r1 = r0;
        while (l1 < r1) {
            if (s[l1] != s[r1]) {
                break;
            }
            l1++;
            r1--;
        }
        if (l1 >= r1) {
            return true;
        }

        // 尝试移除右侧匹配
        int l2 = l0, r2 = r0 - 1;
        while (l2 < r2) {
            if (s[l2] != s[r2]) {
                break;
            }
            l2++;
            r2--;
        }
        if (l2 >= r2) {
            return true;
        }

        return false;
    }
};

int main() {
    Solution solution;
    return 0;
}